class Solution {
    public:
        long long beautifulSubarrays(vector<int>& nums) {
            int n = nums.size();
            int a = 0;
            long long ans = 0;
            unordered_map<int,int> window;
            window[0] = 1;
            for(int i : nums){
                a ^=i;    // 同为0,不同为1
                ans += window[a]++;
            }
            return ans;
        }
    };